#ifndef WIDGET_FUNCD_WEATHER_H
#define WIDGET_FUNCD_WEATHER_H

#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QTimer>
#include <QCompleter>
#include "weatherinfo.h"

namespace Ui {
class widget_funcd_weather;
}

class widget_funcd_weather : public QWidget
{
    Q_OBJECT

public:
    explicit widget_funcd_weather(QWidget *parent = nullptr);
    ~widget_funcd_weather();

private slots:
    void onReplied(QNetworkReply *reply);
    void on_searchButton_clicked();
    void onNetworkTimeout();

private:
    void initCityCodeMap();
    void updateCurrentWeatherUI();
    void updateForecastUI();
    void updateTemperatureCurve();
    QString getWeatherIconName(const QString &weatherType) const;
    // 获取空气质量对应的颜色
        QString getAqiColor(int aqi) const {
            if (aqi <= 50) return "#00E400";     // 优-绿色
            if (aqi <= 100) return "#FFFF00";    // 良-黄色
            if (aqi <= 150) return "#FF7E00";    // 轻度-橙色
            if (aqi <= 200) return "#FF0000";    // 中度-红色
            if (aqi <= 300) return "#99004C";    // 重度-紫色
            return "#7E0023";                    // 严重-褐红
        }
        
        // 获取空气质量等级文字
        QString getAqiLevel(int aqi) const {
            if (aqi <= 50) return "优";
            if (aqi <= 100) return "良";
            if (aqi <= 150) return "轻度";
            if (aqi <= 200) return "中度";
            if (aqi <= 300) return "重度";
            return "严重";
        }

    Ui::widget_funcd_weather *ui;
    QNetworkAccessManager *m_networkManager;
    QTimer *m_networkTimeoutTimer;
    WeatherInfo m_weatherInfo;
    QMap<QString, QString> m_cityCodeMap;
    QCompleter *m_cityCompleter;
};

#endif // WIDGET_FUNCD_WEATHER_H
